/*
 *  neohooke.h
 *  EPPI-0.0
 *
 *  Created by Sergio Conde on 23/05/2011.
 *
 */
 
#ifndef _neohooke_h_
#define _neohooke_h_

#include <iostream>
#include "hyperelasticinvariants.h"

using namespace std;

class NeoHooke : public HyperelasticInvariants
{
public:
//	double E;			// Young's Modulus
//	double nu;			// Poison constant
//	double lambda;		// Lamé constant
//	double mu;			// Shear Modulus
//	double K;			// Bulk Modulus
	string typeVol;
	double b;			// volumetric function parameter

/*	Data members from the base class Material
	string name;
	double density;
	vector< vector<double> > Ct;	// Linearized constitutive tensor
*/
	
public:
        NeoHooke();
        NeoHooke(ifstream &, const string &, const string &);
        ~NeoHooke(){}
	
        // Virtual functions from Hyperelastic base: Material's definition
	
        void strainEnergy(void);		// Strain energy
        void DstrainEnergy(void);		// First derivatives of Strain energy respect to the invariants
        void DDstrainEnergy(void);		// Second derivatives of Strain energy respect to the invariants
        void DDDstrainEnergy(void);		// Third derivatives of Strain energy respect to the invariants
	
        // Virtual functions from Material base: Getting material properties
//        double getE();
//        double getNu();
//        double getLambda();
//        double getMu();
//        double getDensity();
//        double getBulkmodulus();

        /** Local functions */

};

#endif	
	
